Skip to content

Release HyperDX#2378

Open
github-actions[bot] wants to merge 1 commit into
mainfrom
changeset-release/main
Open

Release HyperDX#2378
github-actions[bot] wants to merge 1 commit into
mainfrom
changeset-release/main

Conversation

@github-actions

@github-actions github-actions Bot commented May 29, 2026

Copy link
Copy Markdown
Contributor

This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.

Releases

@hyperdx/api@2.29.0

Minor Changes

  • 9119de5: Add unique MongoDB index on accessKey field in User model to eliminate full collection scans during API key authentication. This could cause startup failures if any existing users share duplicate accessKey values.

Patch Changes

  • 998ea5d: feat: Add option to fit time chart y-axis lower bound

  • ee90738: fix: Add sourceId to MCP Raw SQL Tile schema

  • cdd7ca0: fix(mcp): reduce describe_source timeouts by using rollup tables for map key discovery

  • 8164492: fix(mcp): improve alias field descriptions and examples for readable chart legends

  • a19ba54: feat(mcp): add patch_dashboard, get_dashboard_tile, search_dashboards tools

    Add three new MCP dashboard tools for granular operations:

    • hyperdx_get_dashboard_tile — retrieve a single tile by tileId
    • hyperdx_patch_dashboard — update name/tags and/or replace one tile
      without resubmitting the full dashboard
    • hyperdx_search_dashboards — search by name and/or tags

    Fix empty parameter schema on patch/search tools caused by Zod
    .refine() wrapping. Document Lucene substring matching limitations
    prominently in tool descriptions and query guide prompt.

    Breaking (minor): Tile name on hyperdx_save_dashboard now requires
    at least 1 character (.min(1)). Previously empty string "" was accepted
    and silently persisted as a blank title. Callers sending name: "" will
    now receive a validation error.

  • f6bda8c: refactor(mcp): simplify ObjectId validation with shared helpers and schema-level checks

    Add mcpError() and validateObjectId() utilities to reduce boilerplate
    across MCP tool handlers. Move ObjectId validation into Zod input schemas
    for always-required ID fields, eliminating inline checks entirely. Remaining
    conditional checks use the new one-liner helper.

  • 750b8af: feat(mcp): add denoise option to clickstack_search tool

    Add a denoise boolean parameter to the MCP clickstack_search tool that
    automatically filters out high-frequency repetitive event patterns from
    search results, mirroring the web app's "Denoise Results" feature.

    When enabled, the tool samples 10k random events, mines patterns using
    the Drain algorithm, identifies noisy patterns (>10% of sample), and
    filters them out of result rows. Returns filtered rows plus metadata
    listing removed patterns with estimated counts.

    Extracts shared denoise constants (DENOISE_SAMPLE_SIZE,
    DENOISE_NOISE_THRESHOLD) into @hyperdx/common-utils so the web app
    and MCP server use the same values.

  • f113ea3: fix(mcp): add ClickHouse safety settings (max_execution_time, max_result_rows, readonly) for MCP query execution

  • e03971b: refactor(theme): rename chart palette tokens from chart-1..10 to hue-named
    (chart-blue, chart-orange, ...) and unify the categorical palette across HyperDX
    and ClickStack

    Stored configs from the initial color picker ([HDX-1360] feat(app): number tile static color picker #2265) keep working.
    ChartPaletteTokenSchema stays strict (a plain z.enum, so its z.input
    matches z.output — wrapping it in z.preprocess would poison
    validateRequest's req.body inference all the way up to
    Dashboard.tiles[i].config.color). Migration of legacy chart-1 .. chart-10
    happens at five complementary points so no entry or wire-format path can slip
    through, all composing over a single shared walker
    (walkRawDashboardTileColors in common-utils) so the per-tile traversal
    stays in lockstep:

    • Fetch-time / write-time (React): normalizeDashboardTileColors in
      packages/app/src/dashboard.ts heals dashboards on read
      (useDashboards / fetchLocalDashboards / fetchDashboards) and on write
      (useUpdateDashboard / useCreateDashboard). Unresolvable color strings
      (stale hexes, hand-edited values, forward-rolled future tokens) are
      preserved so the user's chosen value survives a render pass — the strict
      server-side schema surfaces a clear error on next save instead of the
      normalizer quietly dropping the field.
    • JSON import: DBDashboardImportPage runs
      normalizeRawDashboardTileColors on the parsed JSON before the strict
      DashboardTemplateSchema.safeParse, so templates exported from a
      pre-rename deploy import cleanly.
    • Server-side GET response healing: getDashboards / getDashboard in
      packages/api/src/controllers/dashboard.ts rewrite legacy tile colors on
      the way out. Pre-rename Mongo docs are served on the wire as
      hue-named tokens so non-React HTTP clients (CI scripts, stale bundle
      tabs during a rolling deploy, the external API) can round-trip
      GET → PATCH without ever resurrecting chart-N through the strict
      schema.
    • Server-side write shim: the dashboards POST / PATCH routes mount
      a request-body preprocessor that rewrites legacy tile colors before
      validateRequest runs ChartPaletteTokenSchema. Catches non-React
      HTTP callers (stale-bundle tabs during a rolling deploy, CI scripts,
      MCP, the upcoming external-API parity work) for a one-release
      deprecation window without weakening the schema's input/output equality.
      The dashboard provisioner task applies the same shim before parsing
      on-disk template files.
    • Render-time (belt-and-suspenders): DBNumberChart and
      ColorSwatchInput also call resolveChartPaletteToken for tiles
      constructed in memory between fetch and save (ChartEditor form
      state, unit-test fixtures, hand-rolled Tile literals).

    The migration preserves the HyperDX slot ordering from [HDX-1360] feat(app): number tile static color picker #2265 (slot 1 = brand
    green, slot 2 = blue, etc.).

    ClickStack legacy color caveat: Pre-rename ClickStack used a different slot
    ordering than HyperDX (--color-chart-1 was brand blue #437eef, not brand
    green). The migration map uses HyperDX slot ordering, so any ClickStack
    dashboard saved via [HDX-1360] feat(app): number tile static color picker #2265 with color: 'chart-1' will flip from blue to
    Observable green after migration. We chose this trade-off deliberately over
    branching the legacy map by active theme: LEGACY_CHART_PALETTE_TOKEN_MAP lives
    in common-utils (shared with the API), and migration is one-shot persisted on
    next save — theme-branching would couple common-utils to browser DOM state and
    still produce wrong results for users whose active theme changed since the
    original pick. Affected users can manually re-pick the desired hue via the (now
    hue-labeled) color picker.

    The categorical palette is based on Observable 10, with chart-blue swapped to
    #437eef to match the brand link color
    (--click-global-color-text-link-default); all other hues are straight from
    Observable 10. The palette resolves identically on both themes — picking
    chart-blue always renders the brand blue. Brand identity for charts moves
    entirely into the semantic layer: --color-chart-success and --color-chart-info
    resolve to categorical chart-green (#3ca951) and chart-blue (#437eef) on
    both HyperDX and ClickStack, so success fills, info-level logs, and the
    matching multi-series slots all read consistently across brands.

    Internally, JS (CATEGORICAL_HEX_BY_TOKEN in packages/app/src/utils.ts) is
    the source of truth for categorical hues — getColorFromCSSVariable and
    getColorFromCSSToken skip getComputedStyle for categorical tokens since the
    palette is unified across themes. The matching --color-chart-{hue} CSS vars in
    _tokens.scss remain as a stylesheet-author affordance (inline var() use,
    devtools inspection) and a hook for any future per-brand override. Semantic
    tokens still resolve through getComputedStyle because they genuinely vary per
    theme.

  • adac913: refactor(mcp): rename all MCP tool prefixes from hyperdx_ to clickstack_

    Rename the MCP server name from hyperdx to clickstack and update all 19
    tool names (e.g. hyperdx_searchclickstack_search), along with
    descriptions, prompts, error messages, and test references.

  • Updated dependencies [998ea5d]

  • Updated dependencies [ee90738]

  • Updated dependencies [89949b1]

  • Updated dependencies [747352f]

  • Updated dependencies [750b8af]

  • Updated dependencies [e03971b]

  • Updated dependencies [adac913]

    • @hyperdx/common-utils@0.21.0

@hyperdx/app@2.29.0

Minor Changes

  • 9af8cba: feat: add Browser RUM dashboard template

    • New "Browser RUM" template in the dashboards gallery for browser sessions instrumented with the HyperDX Browser SDK (or any OTel browser instrumentation emitting a rum.sessionId resource attribute)
    • Performance Overview section: page-view/session/error KPIs, Core Web Vitals (LCP/INP/CLS) p75, median/p75/p90 page-load percentiles, and long-task health
    • Page Views Breakdown section: traffic grouped by URL, browser (parsed from the http.user_agent the document-load instrumentation emits), country, and device size (derived from screen.xy)
    • Errors section with tabs for an overview, JS exceptions (by message and by page), and failing API calls
    • Five dashboard-level filters: Service, Environment, Service Version, Page URL, and Country
    • Top Countries tile and the Country filter populate when the OTel collector's geoip processor is enabled (geo can't be derived in the browser)
  • e03971b: refactor(theme): rename chart palette tokens from chart-1..10 to hue-named
    (chart-blue, chart-orange, ...) and unify the categorical palette across HyperDX
    and ClickStack

    Stored configs from the initial color picker ([HDX-1360] feat(app): number tile static color picker #2265) keep working.
    ChartPaletteTokenSchema stays strict (a plain z.enum, so its z.input
    matches z.output — wrapping it in z.preprocess would poison
    validateRequest's req.body inference all the way up to
    Dashboard.tiles[i].config.color). Migration of legacy chart-1 .. chart-10
    happens at five complementary points so no entry or wire-format path can slip
    through, all composing over a single shared walker
    (walkRawDashboardTileColors in common-utils) so the per-tile traversal
    stays in lockstep:

    • Fetch-time / write-time (React): normalizeDashboardTileColors in
      packages/app/src/dashboard.ts heals dashboards on read
      (useDashboards / fetchLocalDashboards / fetchDashboards) and on write
      (useUpdateDashboard / useCreateDashboard). Unresolvable color strings
      (stale hexes, hand-edited values, forward-rolled future tokens) are
      preserved so the user's chosen value survives a render pass — the strict
      server-side schema surfaces a clear error on next save instead of the
      normalizer quietly dropping the field.
    • JSON import: DBDashboardImportPage runs
      normalizeRawDashboardTileColors on the parsed JSON before the strict
      DashboardTemplateSchema.safeParse, so templates exported from a
      pre-rename deploy import cleanly.
    • Server-side GET response healing: getDashboards / getDashboard in
      packages/api/src/controllers/dashboard.ts rewrite legacy tile colors on
      the way out. Pre-rename Mongo docs are served on the wire as
      hue-named tokens so non-React HTTP clients (CI scripts, stale bundle
      tabs during a rolling deploy, the external API) can round-trip
      GET → PATCH without ever resurrecting chart-N through the strict
      schema.
    • Server-side write shim: the dashboards POST / PATCH routes mount
      a request-body preprocessor that rewrites legacy tile colors before
      validateRequest runs ChartPaletteTokenSchema. Catches non-React
      HTTP callers (stale-bundle tabs during a rolling deploy, CI scripts,
      MCP, the upcoming external-API parity work) for a one-release
      deprecation window without weakening the schema's input/output equality.
      The dashboard provisioner task applies the same shim before parsing
      on-disk template files.
    • Render-time (belt-and-suspenders): DBNumberChart and
      ColorSwatchInput also call resolveChartPaletteToken for tiles
      constructed in memory between fetch and save (ChartEditor form
      state, unit-test fixtures, hand-rolled Tile literals).

    The migration preserves the HyperDX slot ordering from [HDX-1360] feat(app): number tile static color picker #2265 (slot 1 = brand
    green, slot 2 = blue, etc.).

    ClickStack legacy color caveat: Pre-rename ClickStack used a different slot
    ordering than HyperDX (--color-chart-1 was brand blue #437eef, not brand
    green). The migration map uses HyperDX slot ordering, so any ClickStack
    dashboard saved via [HDX-1360] feat(app): number tile static color picker #2265 with color: 'chart-1' will flip from blue to
    Observable green after migration. We chose this trade-off deliberately over
    branching the legacy map by active theme: LEGACY_CHART_PALETTE_TOKEN_MAP lives
    in common-utils (shared with the API), and migration is one-shot persisted on
    next save — theme-branching would couple common-utils to browser DOM state and
    still produce wrong results for users whose active theme changed since the
    original pick. Affected users can manually re-pick the desired hue via the (now
    hue-labeled) color picker.

    The categorical palette is based on Observable 10, with chart-blue swapped to
    #437eef to match the brand link color
    (--click-global-color-text-link-default); all other hues are straight from
    Observable 10. The palette resolves identically on both themes — picking
    chart-blue always renders the brand blue. Brand identity for charts moves
    entirely into the semantic layer: --color-chart-success and --color-chart-info
    resolve to categorical chart-green (#3ca951) and chart-blue (#437eef) on
    both HyperDX and ClickStack, so success fills, info-level logs, and the
    matching multi-series slots all read consistently across brands.

    Internally, JS (CATEGORICAL_HEX_BY_TOKEN in packages/app/src/utils.ts) is
    the source of truth for categorical hues — getColorFromCSSVariable and
    getColorFromCSSToken skip getComputedStyle for categorical tokens since the
    palette is unified across themes. The matching --color-chart-{hue} CSS vars in
    _tokens.scss remain as a stylesheet-author affordance (inline var() use,
    devtools inspection) and a hook for any future per-brand override. Semantic
    tokens still resolve through getComputedStyle because they genuinely vary per
    theme.

  • 418567f: feat: trace panel inline split detail

Patch Changes

  • 56c5866: fix(search-filters): prevent nested filter dropdowns from disappearing on reopen

  • 998ea5d: feat: Add option to fit time chart y-axis lower bound

  • 20fabc6: feat: add a "Connect your AI assistant" section to Team Settings

    A new section on the Team Settings page (Integrations tab, above the API Keys
    card) lets a user install the HyperDX MCP server in Claude Code, Cursor,
    VS Code + Copilot, Codex CLI, or any MCP-compatible host without hand-rolling
    JSON. Per-host snippets carry the user's personal access key so the install
    works against the existing /api/mcp route without extra setup.

  • 8e52cef: feat(dashboard): auto-resize font in number tiles to fit container

    Number tiles now automatically scale their font size to fit the available
    width, preventing text overflow on narrow tiles and making better use of
    space on wide ones. Includes an error boundary so a single broken tile
    does not crash the entire dashboard.

  • 2cecc9f: Dashboard table tiles configured with a row-click action now show a trailing arrow-up-right icon at the right edge of each row, revealed on hover, with a small tooltip that names the destination. Actionable rows get a stronger background highlight on hover to reinforce interactivity before the user sees the arrow fade in. The icon click navigates to the same URL as a row click, with all the standard native browser behaviors (cmd-click new tab, middle-click new tab, right-click context menu).

  • 750b8af: feat(mcp): add denoise option to clickstack_search tool

    Add a denoise boolean parameter to the MCP clickstack_search tool that
    automatically filters out high-frequency repetitive event patterns from
    search results, mirroring the web app's "Denoise Results" feature.

    When enabled, the tool samples 10k random events, mines patterns using
    the Drain algorithm, identifies noisy patterns (>10% of sample), and
    filters them out of result rows. Returns filtered rows plus metadata
    listing removed patterns with estimated counts.

    Extracts shared denoise constants (DENOISE_SAMPLE_SIZE,
    DENOISE_NOISE_THRESHOLD) into @hyperdx/common-utils so the web app
    and MCP server use the same values.

  • 9d71399: fix(z-index): keep sticky header below drawers and drawers above the fullscreen tile modal

    Two related z-index regressions:

    • PageHeader was pinned at z-index: 100, but app drawers opt into a
      much lower stack via ZIndexContext (contextZIndex + 10, so a
      top-level drawer renders at z-index: 10). The sticky header therefore
      floated above the drawer overlay. The header now sits at z-index: 2 so
      drawer overlays reliably cover the page chrome while the header still
      wins against normal scrolling content.
    • FullscreenPanelModal used Mantine's default modal z-index (200) and
      didn't propagate it through ZIndexContext. Clicking a row in a
      fullscreen search tile opened a DBRowSidePanel drawer at z-index: 10
      that was hidden behind the modal. The modal now follows the existing
      contextZIndex + 10 pattern and wraps its children in a
      ZIndexContext.Provider, so child drawers stack on top of it.
  • 538a1c4: chore: migrate the custom Dashboard page to shared PageLayout / PageHeader. Breadcrumbs, the editable dashboard name, dashboard actions (Favorite, Tags, Menu), and the "Created by … Updated …" meta now live in a single page header, while the query toolbar (SQL/Lucene WHERE, time range, granularity, Live, refresh, edit filters, Run) is pinned to the top of the scroll container as a dedicated sticky row — the chrome above scrolls away and only the toolbar follows the user. The "Updated …" meta moves to the right side of the breadcrumbs row instead of sitting as a separate body line.

    PageHeader gains a stickyRow slot that any page can use to declare a single row that should be the only pinned element, with the rest of the header treated as scrolling chrome. Other pages are unaffected — a PageHeader without stickyRow keeps the existing fully-sticky behavior.

  • d1d91d7: feat(service-map): server-side filtering, latency percentiles, throughput & focus

    The Service Map gains server-side filtering (Lucene/SQL where plus a
    service-name multi-select with inbound/outbound neighbor expansion), latency
    percentiles (p50/p95/p99) and request throughput (req/s) in node and edge
    tooltips, a "Focus" action to scope the map to a service and its immediate
    dependencies, and node sizing by total throughput (incoming + outgoing).
    Percentiles are computed server-side via a single GROUPING SETS query.

  • 53e8bd1: fix: Fix height of source select RHS menu

  • 2a68145: feat(source-picker): chip + kebab menu UX

  • f95687b: Fix the database, table, and connection dropdowns being clipped inside the source setup modal. The dropdowns now render in a portal, so the full list is visible and scrollable when configuring or editing a source.

  • a6e7dcd: chore: Make error states consistent across chart types

  • Updated dependencies [9119de5]

  • Updated dependencies [998ea5d]

  • Updated dependencies [ee90738]

  • Updated dependencies [cdd7ca0]

  • Updated dependencies [89949b1]

  • Updated dependencies [747352f]

  • Updated dependencies [8164492]

  • Updated dependencies [a19ba54]

  • Updated dependencies [f6bda8c]

  • Updated dependencies [750b8af]

  • Updated dependencies [f113ea3]

  • Updated dependencies [e03971b]

  • Updated dependencies [adac913]

    • @hyperdx/api@2.29.0
    • @hyperdx/common-utils@0.21.0

@hyperdx/common-utils@0.21.0

Minor Changes

  • e03971b: refactor(theme): rename chart palette tokens from chart-1..10 to hue-named
    (chart-blue, chart-orange, ...) and unify the categorical palette across HyperDX
    and ClickStack

    Stored configs from the initial color picker ([HDX-1360] feat(app): number tile static color picker #2265) keep working.
    ChartPaletteTokenSchema stays strict (a plain z.enum, so its z.input
    matches z.output — wrapping it in z.preprocess would poison
    validateRequest's req.body inference all the way up to
    Dashboard.tiles[i].config.color). Migration of legacy chart-1 .. chart-10
    happens at five complementary points so no entry or wire-format path can slip
    through, all composing over a single shared walker
    (walkRawDashboardTileColors in common-utils) so the per-tile traversal
    stays in lockstep:

    • Fetch-time / write-time (React): normalizeDashboardTileColors in
      packages/app/src/dashboard.ts heals dashboards on read
      (useDashboards / fetchLocalDashboards / fetchDashboards) and on write
      (useUpdateDashboard / useCreateDashboard). Unresolvable color strings
      (stale hexes, hand-edited values, forward-rolled future tokens) are
      preserved so the user's chosen value survives a render pass — the strict
      server-side schema surfaces a clear error on next save instead of the
      normalizer quietly dropping the field.
    • JSON import: DBDashboardImportPage runs
      normalizeRawDashboardTileColors on the parsed JSON before the strict
      DashboardTemplateSchema.safeParse, so templates exported from a
      pre-rename deploy import cleanly.
    • Server-side GET response healing: getDashboards / getDashboard in
      packages/api/src/controllers/dashboard.ts rewrite legacy tile colors on
      the way out. Pre-rename Mongo docs are served on the wire as
      hue-named tokens so non-React HTTP clients (CI scripts, stale bundle
      tabs during a rolling deploy, the external API) can round-trip
      GET → PATCH without ever resurrecting chart-N through the strict
      schema.
    • Server-side write shim: the dashboards POST / PATCH routes mount
      a request-body preprocessor that rewrites legacy tile colors before
      validateRequest runs ChartPaletteTokenSchema. Catches non-React
      HTTP callers (stale-bundle tabs during a rolling deploy, CI scripts,
      MCP, the upcoming external-API parity work) for a one-release
      deprecation window without weakening the schema's input/output equality.
      The dashboard provisioner task applies the same shim before parsing
      on-disk template files.
    • Render-time (belt-and-suspenders): DBNumberChart and
      ColorSwatchInput also call resolveChartPaletteToken for tiles
      constructed in memory between fetch and save (ChartEditor form
      state, unit-test fixtures, hand-rolled Tile literals).

    The migration preserves the HyperDX slot ordering from [HDX-1360] feat(app): number tile static color picker #2265 (slot 1 = brand
    green, slot 2 = blue, etc.).

    ClickStack legacy color caveat: Pre-rename ClickStack used a different slot
    ordering than HyperDX (--color-chart-1 was brand blue #437eef, not brand
    green). The migration map uses HyperDX slot ordering, so any ClickStack
    dashboard saved via [HDX-1360] feat(app): number tile static color picker #2265 with color: 'chart-1' will flip from blue to
    Observable green after migration. We chose this trade-off deliberately over
    branching the legacy map by active theme: LEGACY_CHART_PALETTE_TOKEN_MAP lives
    in common-utils (shared with the API), and migration is one-shot persisted on
    next save — theme-branching would couple common-utils to browser DOM state and
    still produce wrong results for users whose active theme changed since the
    original pick. Affected users can manually re-pick the desired hue via the (now
    hue-labeled) color picker.

    The categorical palette is based on Observable 10, with chart-blue swapped to
    #437eef to match the brand link color
    (--click-global-color-text-link-default); all other hues are straight from
    Observable 10. The palette resolves identically on both themes — picking
    chart-blue always renders the brand blue. Brand identity for charts moves
    entirely into the semantic layer: --color-chart-success and --color-chart-info
    resolve to categorical chart-green (#3ca951) and chart-blue (#437eef) on
    both HyperDX and ClickStack, so success fills, info-level logs, and the
    matching multi-series slots all read consistently across brands.

    Internally, JS (CATEGORICAL_HEX_BY_TOKEN in packages/app/src/utils.ts) is
    the source of truth for categorical hues — getColorFromCSSVariable and
    getColorFromCSSToken skip getComputedStyle for categorical tokens since the
    palette is unified across themes. The matching --color-chart-{hue} CSS vars in
    _tokens.scss remain as a stylesheet-author affordance (inline var() use,
    devtools inspection) and a hook for any future per-brand override. Semantic
    tokens still resolve through getComputedStyle because they genuinely vary per
    theme.

Patch Changes

  • 998ea5d: feat: Add option to fit time chart y-axis lower bound

  • ee90738: fix: Add sourceId to MCP Raw SQL Tile schema

  • 89949b1: Adding filters to dashboard exports. Implemented validation on dashboard imports to catch potential issues with generated JSON or manually tweaked JSON.

  • 747352f: feat: add direct_read optimization for filters

  • 750b8af: feat(mcp): add denoise option to clickstack_search tool

    Add a denoise boolean parameter to the MCP clickstack_search tool that
    automatically filters out high-frequency repetitive event patterns from
    search results, mirroring the web app's "Denoise Results" feature.

    When enabled, the tool samples 10k random events, mines patterns using
    the Drain algorithm, identifies noisy patterns (>10% of sample), and
    filters them out of result rows. Returns filtered rows plus metadata
    listing removed patterns with estimated counts.

    Extracts shared denoise constants (DENOISE_SAMPLE_SIZE,
    DENOISE_NOISE_THRESHOLD) into @hyperdx/common-utils so the web app
    and MCP server use the same values.

  • adac913: refactor(mcp): rename all MCP tool prefixes from hyperdx_ to clickstack_

    Rename the MCP server name from hyperdx to clickstack and update all 19
    tool names (e.g. hyperdx_searchclickstack_search), along with
    descriptions, prompts, error messages, and test references.

@hyperdx/hdx-eval@0.2.0

Minor Changes

  • 5bd1c68: feat: add AI eval framework for benchmarking MCP servers

    New @hyperdx/hdx-eval package for benchmarking AI agents against
    observability MCP servers. Generates deterministic synthetic telemetry
    with planted anomalies, spawns Claude Code as an SRE agent, records full
    trajectories, and grades answers using programmatic checks and an
    LLM-as-judge.

    Includes 5 scenarios (error-root-cause, latency-spike, noisy-signals,
    segmented-regression, service-health-check), MCP-agnostic N-way
    comparison, blinded judging, and a web viewer for browsing results.

@hyperdx/otel-collector@2.29.0

@vercel

vercel Bot commented May 29, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
hyperdx-oss Ready Ready Preview, Comment Jun 9, 2026 8:31pm
hyperdx-storybook Ready Ready Preview, Comment Jun 9, 2026 8:31pm

Request Review

@github-actions github-actions Bot force-pushed the changeset-release/main branch 2 times, most recently from 905736a to e55a29b Compare June 1, 2026 11:56
@github-actions github-actions Bot force-pushed the changeset-release/main branch from e55a29b to 3483c9b Compare June 1, 2026 12:57
@github-actions github-actions Bot force-pushed the changeset-release/main branch from 3483c9b to 61212e6 Compare June 1, 2026 15:49
@github-actions github-actions Bot force-pushed the changeset-release/main branch from 61212e6 to 8a6b93d Compare June 1, 2026 17:45
@github-actions github-actions Bot force-pushed the changeset-release/main branch from 8a6b93d to dae12c6 Compare June 1, 2026 21:00
@github-actions github-actions Bot force-pushed the changeset-release/main branch from dae12c6 to c6c4bc4 Compare June 2, 2026 13:50
@github-actions github-actions Bot force-pushed the changeset-release/main branch from c6c4bc4 to 78ced46 Compare June 2, 2026 14:25
@github-actions github-actions Bot force-pushed the changeset-release/main branch from 78ced46 to 47a828b Compare June 2, 2026 16:46
@github-actions github-actions Bot force-pushed the changeset-release/main branch from 47a828b to d3f337e Compare June 2, 2026 18:06
@github-actions github-actions Bot force-pushed the changeset-release/main branch from 88dea93 to b382b22 Compare June 3, 2026 14:07
@github-actions github-actions Bot force-pushed the changeset-release/main branch from b382b22 to 5b2430f Compare June 3, 2026 17:07
@github-actions github-actions Bot force-pushed the changeset-release/main branch from 5b2430f to 3174214 Compare June 4, 2026 12:24
@github-actions github-actions Bot force-pushed the changeset-release/main branch from 3174214 to 96b87f1 Compare June 4, 2026 15:01
@github-actions github-actions Bot force-pushed the changeset-release/main branch from 96b87f1 to 4c6a220 Compare June 4, 2026 15:12
@github-actions github-actions Bot force-pushed the changeset-release/main branch from 4c6a220 to e45fa2f Compare June 4, 2026 17:38
@github-actions github-actions Bot force-pushed the changeset-release/main branch from e45fa2f to 904049f Compare June 4, 2026 18:21
@github-actions github-actions Bot force-pushed the changeset-release/main branch from 904049f to eac40dc Compare June 4, 2026 19:16
@github-actions github-actions Bot force-pushed the changeset-release/main branch from eac40dc to 49af301 Compare June 4, 2026 20:30
@github-actions github-actions Bot force-pushed the changeset-release/main branch from 49af301 to 6f70379 Compare June 4, 2026 21:56
@greptile-apps

greptile-apps Bot commented Jun 5, 2026

Copy link
Copy Markdown

Greptile Summary

This is an automated Changesets release PR bumping @hyperdx/api, @hyperdx/app, and @hyperdx/otel-collector from 2.28.0 → 2.29.0, @hyperdx/common-utils from 0.20.0 → 0.21.0, and @hyperdx/hdx-eval from 0.1.0 → 0.2.0. No application code is modified; all changes are version metadata.

  • Changeset files removed — 27 consumed .changeset/*.md files deleted after being folded into each package's CHANGELOG.md.
  • Version bumpspackage.json and yarn.lock updated to reference @hyperdx/common-utils@^0.21.0 across api, app, and cli; .env updated with CODE_VERSION=2.29.0 and IMAGE_VERSION_SUB_TAG=.29.0.
  • CHANGELOG entries added — New entries in packages/api, packages/app, packages/common-utils, packages/hdx-eval, and packages/otel-collector summarizing the notable changes included in this release.

Confidence Score: 5/5

Safe to merge — the PR contains only version metadata updates generated by the Changesets action with no application code modifications.

All changed files are version management artifacts: package.json version bumps, CHANGELOG additions, consumed changeset file deletions, a yarn.lock resolution update, and a .env build-version tag. The .env file contains no secrets. Nothing in the diff alters runtime behavior.

No files require special attention.

Important Files Changed

Filename Overview
packages/api/package.json Version bumped 2.28.0 → 2.29.0; @hyperdx/common-utils dependency updated to ^0.21.0
packages/app/package.json Version bumped 2.28.0 → 2.29.0; @hyperdx/common-utils dependency updated to ^0.21.0
packages/common-utils/package.json Version bumped 0.20.0 → 0.21.0 reflecting minor changes to chart palette tokens and denoise constants
.env CODE_VERSION and IMAGE_VERSION_SUB_TAG updated to 2.29.0/.29.0; no secrets present, file contains only Docker image names and dev port configuration
yarn.lock Workspace resolution alias updated from ^0.20.0 to ^0.21.0 for @hyperdx/common-utils across api, app, and cli entries

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    A[Changesets Action] --> B[Consume changeset files]
    B --> C[Bump package versions]
    C --> D[common-utils 0.20.0 to 0.21.0]
    C --> E[api 2.28.0 to 2.29.0]
    C --> F[app 2.28.0 to 2.29.0]
    C --> G[otel-collector 2.28.0 to 2.29.0]
    C --> H[hdx-eval 0.1.0 to 0.2.0]
    D --> E
    D --> F
    B --> I[Update CHANGELOG files]
    B --> J[Update .env CODE_VERSION]
    B --> K[Update yarn.lock]
    E & F & G & H --> L[Merge then npm publish via CI]
Loading

Reviews (10): Last reviewed commit: "chore(release): bump HyperDX app/package..." | Re-trigger Greptile

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants